"""
练习题2：商品库存管理系统

难度：⭐⭐⭐

题目描述：
你需要开发一个简单的商品库存管理系统。

1. 创建商品库存数据结构：
   每个商品包含：商品名称、价格、库存数量、分类
   使用嵌套字典存储（字典的value也是字典）

2. 实现以下功能：
   a) 显示所有商品信息（格式化输出）
   b) 计算库存总价值（每个商品：价格 × 库存数量，然后求和）
   c) 查找某个分类下的所有商品
   d) 找出库存不足（库存 < 10）的商品，并发出预警
   e) 模拟售出商品：输入商品名和数量，更新库存
      - 如果库存充足，扣减库存并显示剩余
      - 如果库存不足，提示无法售出

3. 使用while循环实现一个简单的菜单系统，让用户选择操作

知识点考察：
- 嵌套字典的创建和访问
- for循环遍历复杂数据结构
- while循环实现菜单系统
- 条件判断和逻辑运算
- 字符串格式化
- 列表推导式（进阶）

提示：
- 嵌套字典访问：dict[key1][key2]
- 遍历时可以使用 for item_id, info in inventory.items()
- 字符串格式化：f"{变量名}" 或 "{:.2f}".format(价格)
"""

# 在下方编写你的代码
# ========================================

# 示例数据结构
inventory = {
    "A001": {
        "name": "苹果",
        "price": 6.5,
        "stock": 50,
        "category": "水果"
    },
    "A002": {
        "name": "香蕉",
        "price": 4.2,
        "stock": 8,
        "category": "水果"
    },
    "B001": {
        "name": "牛奶",
        "price": 12.0,
        "stock": 30,
        "category": "饮品"
    },
    "B002": {
        "name": "可乐",
        "price": 3.5,
        "stock": 5,
        "category": "饮品"
    },
    "C001": {
        "name": "面包",
        "price": 8.0,
        "stock": 15,
        "category": "主食"
    }
}


# TODO: 功能1 - 显示所有商品
def show_all_products(inventory):
    """显示所有商品信息"""
    pass  # 删除这行，编写你的代码


# TODO: 功能2 - 计算库存总价值
def calculate_total_value(inventory):
    """计算所有商品的库存总价值"""
    pass  # 删除这行，编写你的代码


# TODO: 功能3 - 按分类查找商品
def find_by_category(inventory, category):
    """查找指定分类的所有商品"""
    pass  # 删除这行，编写你的代码


# TODO: 功能4 - 库存预警
def low_stock_warning(inventory, threshold=10):
    """找出库存低于阈值的商品"""
    pass  # 删除这行，编写你的代码


# TODO: 功能5 - 售出商品
def sell_product(inventory, product_id, quantity):
    """
    售出商品，更新库存
    返回：True表示售出成功，False表示失败
    """
    pass  # 删除这行，编写你的代码


# TODO: 主程序 - 菜单系统
def main():
    """主菜单循环"""
    while True:
        print("\n" + "=" * 40)
        print("商品库存管理系统")
        print("=" * 40)
        print("1. 显示所有商品")
        print("2. 计算库存总价值")
        print("3. 按分类查找商品")
        print("4. 库存预警")
        print("5. 售出商品")
        print("0. 退出系统")
        print("=" * 40)

        # 在这里继续编写菜单逻辑
        pass


# 运行主程序（取消下面的注释来运行）
# main()

# ========================================
# 期望输出示例：
"""
========================================
商品库存管理系统
========================================
1. 显示所有商品
2. 计算库存总价值
3. 按分类查找商品
4. 库存预警
5. 售出商品
0. 退出系统
========================================
请选择操作 (0-5): 1

所有商品信息：
--------------------
编号: A001
名称: 苹果
价格: ¥6.50
库存: 50
分类: 水果
--------------------
... (其他商品)

请选择操作 (0-5): 2
库存总价值: ¥935.00

请选择操作 (0-5): 4
【库存预警】以下商品库存不足10件：
- 香蕉 (A002): 剩余 8 件
- 可乐 (B002): 剩余 5 件

请选择操作 (0-5): 5
请输入商品编号: A001
请输入售出数量: 5
✓ 售出成功！苹果 剩余库存: 45

请选择操作 (0-5): 0
感谢使用，再见！
"""

# 挑战：完成基础功能后，可以尝试添加以下进阶功能
"""
进阶功能（可选）：
1. 添加新商品功能
2. 删除商品功能
3. 修改商品价格功能
4. 保存数据到文件（使用json模块）
5. 从文件加载数据
6. 销售记录统计
"""

